package com.bzkj.msfx.service.impl;

import com.bzkj.common.core.domain.AjaxResult;
import com.bzkj.common.core.page.TableDataInfo;
import com.bzkj.msfx.service.RelationService;
import com.bzkj.msfx.utils.FusionHttpUtils;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.ArrayList;

/**
 * @projectName: btyy
 * @package: com.bzkj.btyy.service.impl
 * @className: RelationServcieImpl
 * @description: 关联关系文件生成服务层实现类
 * @author: C1309
 * @createDate: 2024年03月21日
 * @version: v1.0
 */
@Service

public class RelationServiceImpl implements RelationService {

    @Resource
    private FusionHttpUtils fusionHttpUtils;

    /**
     * 查询关联关系单据列表
     *
     * @param beginTime  查询开始时间
     * @param endTime    查询结束时间
     * @param orderState 订单状态
     * @return 查询结果
     */
    @Override
    public TableDataInfo queryRelationList(String beginTime, String endTime, String orderState, String orderId) {
        String params = "beginDate=" + beginTime + "&endDate=" + endTime + "&flag=" + orderState;
        if (orderId != null) {
            params += "&orderId=" + orderId;
        }
        return fusionHttpUtils.getTableDataInfo("/relation/list?" + params, null);
    }

    /**
     * 查询关联关系单据列表(追溯码）
     *
     * @param id     关联关系单据ID
     * @param typeNo 药品子类编码
     * @param entId  工厂ID
     * @return 查询结果
     */
    @Override
    public AjaxResult queryRelationCode(String id, String typeNo, String entId) {
        try {
            return fusionHttpUtils.sendGetRestFulApi("/relation/code/" + id + "/" + typeNo + "/" + entId);
        } catch (Exception e) {
            return AjaxResult.error("关联关系文件导出失败，具体原因：" + e.getMessage());
        }
    }

    /**
     * 导出关联关系文件
     *
     * @param ids 关联关系单据ID
     * @return 导出结果
     */
    @Override
    public AjaxResult exportXml(ArrayList<String> ids) {
        // 构建请求参数
        StringBuilder builder = new StringBuilder();
        for (String id : ids) {
            builder.append(id).append(",");
        }
        String substring = builder.substring(0, builder.length() - 1);
        try {
            return fusionHttpUtils.sendGetRestFulApi("/relation/export/" + substring);
        } catch (Exception e) {
            return AjaxResult.error("关联关系文件导出失败，具体原因：" + e.getMessage());
        }
    }

    /**
     * 删除关联关系单据
     *
     * @param relationId 关联关系单据ID
     * @return 删除结果
     */
    @Override
    public AjaxResult removeByIds(String relationId) {
        try {
            return fusionHttpUtils.sendDeleteRequest("/relation/" + relationId, null, null, null);
        } catch (Exception e) {
            return AjaxResult.error("作废关联关系单据失败，具体原因：" + e.getMessage());
        }
    }
}
